package thread;
/*静态方法上的同步
如果在静态方法上使用synchronized，那么该方法一定是具有同步效果
 */
public class SyncDemo03 {
    public static void main(String[] args) {
        //Aoo aoo = new Aoo();
        Aoo aoo1 = new Aoo();
        Aoo aoo2 = new Aoo();
        Thread thread1 = new Thread(){
            @Override
            public void run(){
                //Aoo.doSome();
                aoo1.doSome();
            }
        };
        Thread thread2  = new Thread(){
            @Override
            public void run(){
                //Aoo.doSome();
                aoo1.doSome();
            }
        };
        thread1.start();
        thread2.start();
    }
}
class Aoo{
    //public synchronized static void  doSome(){//静态方法的锁不管怎样都生效
    public  static void  doSome(){
        synchronized (Aoo.class) {//静态方法中如果是使用同步块，那么监视器对象使用当前类对象即可，  写法：类名.class
            Thread thread = Thread.currentThread();
            System.out.println(thread.getName() + "正在执行doSome方法");
            try {
                Thread.sleep(2000);
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            }
            System.out.println(thread.getName() + " 方法执行完成");
        }
    }
}
